前端使用赵大的魔改版 https://github.com/esdeathlove/ss-panel-v3-mod
后端也使用赵大的魔改版 https://github.com/esdeathlove/shadowsocks
演示环境 : VirMach 512RAM机子 Ubuntu 14 x64
安装前端 1.安装 LNMP
screen -S lnmp 2G以上内存 wget http://soft.vpser.net/lnmp/lnmp1.3-full.tar.gz && tar xvzf lnmp1.3-full.tar.gz cd lnmp1.3-full && ./install.sh1G以下内存 wget http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz && tar xvzf lnmp1.2-full.tar.gz cd lnmp1.2-full && ./install.sh
安装过程要求输入MySQL密码, 选择MySQL版本>=5.5, PHP版本>5.6.
安装大概需要半小时, 如果中途 ssh 断线, 输入 screen -r lnmp
2.设置虚拟主机
lnmp vhost add
要求输入你的域名, 然后其余项都选 no
接着修改下 nginx
编辑 /usr/local/nginx/conf/vhost/你的域名.conf
然后添加下面这一段到 server
location / { try_files $uri $uri / /index.php$is_args $args ; }
修改 root 那一行为
root /home/wwwroot/你的域名/public;
3.下载 sspanel 代码
cd /home/wwwroot/你的域名apt-get install git -y git clone -b master https://github.com/esdeathlove/ss-panel-v3-mod.git tmp && mv tmp/.git . && rm -rf tmp && git reset --hard chown -R root:root * chmod -R 755 * chown -R www:www storage chattr -i .user.ini mv .user.ini public cd publicchattr +i .user.ini service nginx restart
4.安装 radius , 不使用VPN的话, 可以不进行这一步
apt-get install perl perl -MCPAN -e shell cpan>install DBI //安装完成后退出cpan cpan>quit apt install freeradius freeradius-mysql freeradius-utils
5.配置数据库
浏览器打开 http://你的vps ip/phpmyadmin
用户 : root
密码 :安装 lnmp 时设置的
需要创建一个数据库和一个访问这个数据库的用户
点击 用户
-> 新建
-> 添加用户
接着按执行 选择刚刚新建的数据库 sspanel 导入程序目录下的 glzjin_all.sql
不适用 VPN 的话跳下一步
接着配置 radius , 创建个 radius 数据库和用户 (重复以上步骤)
选择 radius 数据库 导入 https://github.com/glzjin/Radius-install/raw/master/all.sql
回到 ssh 继续设置 radius
编辑 /etc/freeradius/sql.conf
配置 login(用户名), password(密码), radius_db(数据库名)等字段
找到 readclients 一行,设为 yes 并去掉注释符号#
然后下面是几个文件的覆盖
wget https://github.com/glzjin/Radius-install/raw/master/radiusd.conf -O /etc/freeradius/radiusd.conf wget https://github.com/glzjin/Radius-install/raw/master/default -O /etc/freeradius/sites-enabled/default wget https://github.com/glzjin/Radius-install/raw/master/dialup.conf -O /etc/freeradius/sql/mysql/dialup.conf wget https://github.com/glzjin/Radius-install/raw/master/dictionary -O /etc/freeradius/dictionary wget https://github.com/glzjin/Radius-install/raw/master/counter.conf -O /etc/freeradius/sql/mysql/counter.conf
Radius 配置完成,
然后你也可以将该 freeradius 设为开机启动项
6.配置 sspanel
cd /home/wwwroot/你的域名cp config/.config.php.example config/.config.php vi config/.config.php
由于配置太多 这里只说重点
$System_Config ['key' ] = '' ; //修改此key为随机字符串确保网站安全$System_Config ['appName' ] = '' ; //站点名称$System_Config ['baseUrl' ] = 'https://zhaojin97.cn' ; // 站点地址$System_Config ['timeZone' ] = 'PRC' ; // RPC 天朝时间 UTC 格林时间$System_Config ['pwdMethod' ] = 'sha256' ; // 密码加密 可选 md5,sha256$System_Config ['salt' ] = '' ; // 密码加密用,从旧版升级请留空$System_Config ['authDriver' ] = 'cookie' ; // 登录验证存储方式,推荐使用Redis 可选: cookie,redis$System_Config ['mailDriver' ] = 'mailgun' ; // 邮件 可选 mailgun or smtp 需要支持qq邮箱的选 smtp$System_Config ['checkinMin' ] = '100' ; // 签到最少流量 单位MB$System_Config ['checkinMax' ] = '500' ; // 签到最多流量$System_Config ['defaultTraffic' ] = '100' ; // 用户初始流量 单位GB$System_Config ['inviteNum' ] = '0' ; // 注册后获得的邀请码数量$System_Config ['db_driver' ] = 'mysql' ;$System_Config ['db_host' ] = 'localhost' ; // 数据库地址$System_Config ['db_database' ] = '' ; // 数据库名称 sspanel$System_Config ['db_username' ] = '' ; // 数据库用户 sspanel$System_Config ['db_password' ] = '' ; // sspanel用户的密码$System_Config ['db_charset' ] = 'utf8' ;$System_Config ['db_collation' ] = 'utf8_general_ci' ;$System_Config ['db_prefix' ] = '' ;$System_Config ['redis_scheme' ] = 'tcp' ; // 登录验证存储方式选了 redis 的话需要配置$System_Config ['redis_host' ] = '127.0.0.1' ;$System_Config ['redis_port' ] = '6379' ;$System_Config ['redis_database' ] = '0' ;$System_Config ['redis_password' ]="" ;$System_Config ['smtp_host' ] = '' ; // 例如 smtp.qq.com$System_Config ['smtp_username' ] = '' ;$System_Config ['smtp_port' ] = '25' ;$System_Config ['smtp_name' ] = '' ;$System_Config ['smtp_sender' ] = '' ;$System_Config ['smtp_passsword' ] = '' ;$System_Config ['smtp_ssl' ] = 'false' ;$System_Config ['enable_wecenter' ]='false' ;$System_Config ['enable_radius' ]='false' ; // 配置了 radius 的话就开$System_Config ['enable_cloudxns' ]='false' ;$System_Config ['enable_duoshuo' ]='false' ;$System_Config ['enable_rss' ]='true' ;$System_Config ['enable_paymentwall' ]='false' ;$System_Config ['radius_db_host' ]='' ; // 跟 上面 database 数据库配置差不多 换成radius即可$System_Config ['radius_db_database' ]='' ;$System_Config ['radius_db_user' ]='' ;$System_Config ['radius_db_password' ]='' ;$System_Config ['radius_secret' ]='' ; // 这个重要 必须设$System_Config ['min_port' ]='10000' ; // SSR 分配端口号范围$System_Config ['max_port' ]='65535' ;$System_Config ['pacp_offset' ]='-20000' ; // PAC+ 和 PAC++ 用到$System_Config ['pacpp_offset' ]='-20000' ;$System_Config ['Speedtest_duration' ]='6' ; // 对应后端 SSR 的 userapiconfig.py 里的 SPEEDTEST$System_Config ['ramdom_group' ]='0' ; // 组别用于区分用户组 对应组只能访问对应组和0组的服务器 明白后再修改 $System_Config ['code_payback' ]='20' ; // 用户充值后 给邀请他注册的人返利多少%$System_Config ['reg_auto_reset_day' ]='0' ;$System_Config ['reg_auto_reset_bandwidth' ]='100' ; // 单位G
以上为 config 部分配置 完成后保存并上传到原目录下
切换到 ssh 窗口, 在你的网站目录下执行以下命令创建管理员
php xcat createAdmin
按照提示, 输入管理员邮箱密码等信息, 然后执行以下命令同步用户
php xcat syncusers
此时管理员创建完成
接下来需要对服务器进行计划任务的设置,执行 crontab -e
命令, 添加以下五段
30 22 * * * php /home/wwwroot/站点文件夹/xcat sendDiaryMail */1 * * * * php /home/wwwroot/站点文件夹/xcat synclogin */1 * * * * php /home/wwwroot/站点文件夹/xcat syncvpn 0 0 * * * php /home/wwwroot/站点文件夹/xcat dailyjob */1 * * * * php /home/wwwroot/站点文件夹/xcat checkjob */1 * * * * php /home/wwwroot/站点文件夹/xcat syncnas
重启Crontab/etc/init.d/cron restart
7.注意事项
检查时间是否为天朝时间
如果VPS默认是非中国时区的话, 如下命令可以用来更改为中国时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
检查防火墙是否屏蔽数据库端口
iptables -A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 3306 -j ACCEPT iptables -A INPUT -s 节点IP -p tcp -m tcp --dport 3306 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
查看防火墙规则
查看已添加的iptables规则 iptables -L -n --line-numbers 删除已添加的iptables规则 iptables -D INPUT line-numbers
规则保存
iptables-save > /etc/iptables.rules service iptables save
安装后端 1.安装 libsodium
apt-get install build-essential wget -y wget https://github.com/jedisct1/libsodium/releases/download/1.0.10/libsodium-1.0.10.tar.gz tar xf libsodium-1.0.10.tar.gz && cd libsodium-1.0.10 ./configure && make -j2 && make install ldconfig
2.安装SSR
apt-get install python-pip git -y pip install cymysql cd ..git clone -b manyuser https://github.com/glzjin/shadowsocks.git cd shadowsockschmod +x *.sh cp apiconfig.py userapiconfig.py cp config.json user-config.json vi userapiconfig.py
然后主要编辑 userapiconfig.py, 来解释下里面各项配置的意思
NODE_ID = 1 SPEEDTEST = 6 CLOUDSAFE = 1 ANTISSATTACK = 0 AUTOEXEC = 1 MULTI_THREAD = 0 MU_SUFFIX = 'zhaoj.in' MU_REGEX = '%5m%id.%suffix' SERVER_PUB_ADDR = '127.0.0.1' API_INTERFACE = 'glzjinmod' MUDB_FILE = 'mudb.json' MYSQL_HOST = '127.0.0.1' MYSQL_PORT = 3306 MYSQL_USER = 'ss' MYSQL_PASS = 'ss' MYSQL_DB = 'shadowsocks' MYSQL_UPDATE_TIME = 60 MYSQL_SSL_ENABLE = 0 MYSQL_SSL_CERT = '/root/shadowsocks/client-cert.pem' MYSQL_SSL_KEY = '/root/shadowsocks/client-key.pem' MYSQL_SSL_CA = '/root/shadowsocks/ca.pem' API_HOST = '127.0.0.1' API_PORT = 80 API_PATH = '/mu/v2/' API_TOKEN = 'abcdef' API_UPDATE_TIME = 60 MANAGE_PASS = 'ss233333333' MANAGE_BIND_IP = '127.0.0.1' MANAGE_PORT = 23333
3.运行SSR
运行的话, 有几种方式
python server.py 用于调错的
./run.sh 无日志后台运行
./logrun.sh 有日志后台运行
supervisord
这里说下 使用Supervisor守护进程启动ssr
apt-get install supervisor -y vi /etc/supervisor/conf.d/ssr.conf [program:ssr] command =python /root/shadowsocks/server.py autorestart=true autostart=true user=root /etc/init.d/supervisor restart supervisorctl restart ssr supervisorctl status supervisorctl tail -f ssr stderr ulimit -n 1024000
强化安全 1.将网站支持 SSL 强化安全
需要提前准备好 SSL 证书文件, 没有的话可以使用Let’s Encrypt 搞个免费SSL证书, 接着配置 nginx
编辑 /usr/local/nginx/conf/vhost/域名.conf
server { listen 80; server_name 域名; rewrite ^(.*) https://$server_name $1 permanent; } server { listen 443 ssl; ssl_certificate /etc/letsencrypt/live/你的域名/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/你的域名/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/你的域名/chain.pem; }
2.禁止 http 的访问请求
由于 http 仍然可以访问, 所以我们需要将 http 的请求手动转移到 https, 由于 SSpanel 本身使用了重定向, 那么在不使用其他重定向的情况下, 最简单的方法就是用 html 网页的 参数
<!DOCTYPE html> <html > <head > <meta http-equiv ="refresh" content ="0;url=https://域名" > <meta http-equiv ="Content-Type" content ="text/html; charset=utf-8" > </head > </html >
3.转移 phpMyAdmin 目录
转移目录
LNMP安装完毕以后默认的会在IP地址网站根目录生成一个 phpMyAdmin 的目录, 但是正是因为这个原因, 暴露了该目录, 我一般都会直接把这个文件夹转移到新的网站目录下, 比如转移到其他二级域名下的某个目录, 只需要在LNMP中新建一个二级域名而已, 然后把 phpMyAdmin 这个目录再转移到这个二级域名的网站目录下
限制IP
在 phpMyAdmin 的目录下新增 .htaccess
写入以下
allow from 59.168.1.0/24 allow from 59.168.2.50 deny from all
除了 59.168.1.1 至 59.168.1.254 的区间IP 与 59.168.2.50 可以进入后台其于IP都封锁, 就算对方知道路径, IP不允许也是无法进入
参考
ss-panel-v3-mod 安装说明
说明以及安装方法
Linux上iptables防火墙的基本应用教程